package cn.tedu.lbs.basic.web.utils;

import com.tarena.lbs.common.passport.principle.UserPrinciple;

/**
 * 在认证的流程中,使用的线程传参工具
 * 过滤器 存储数据  业务代码取数据
 * 实现的方案 使用同一个ThreadLocal对象
 */
public class AuthenticationContextUtil {
    private static final ThreadLocal<UserPrinciple> threadLocal=new ThreadLocal<>();
    //使用常量 threadLocal实现3个方法 save get clear
    //save方法 调用的线程 会使用线程本身做key值 存放到map里一个value
    public static void save(UserPrinciple userprinciple){
        threadLocal.set(userprinciple);
    }
    //get方法 调用的线程 使用线程本身 做key 获取map的value
    public static UserPrinciple get(){
        return threadLocal.get();
    }
    //clear方法 使用完的业务流程 一定要将当前线程数据 清空
    public static void clear(){
        threadLocal.remove();
    }
}
